const tree = [
  {
    title: '0-0',
    key: '0-0',
    children: [
      {
        title: '0-0-0',
        key: '0-0-0',
        children: [
          { title: '0-0-0-0', key: '0-0-0-0' },
          { title: '0-0-0-1', key: '0-0-0-1' },
          { title: '0-0-0-2', key: '0-0-0-2' }
        ]
      },
      {
        title: '0-0-1',
        key: '0-0-1',
        children: [
          { title: '0-0-1-0', key: '0-0-1-0' },
          { title: '0-0-1-1', key: '0-0-1-1' },
          { title: '0-0-1-2', key: '0-0-1-2' }
        ]
      },
      {
        title: '0-0-2',
        key: '0-0-2'
      }
    ]
  },
  {
    title: '0-1',
    key: '0-1',
    children: [
      { title: '0-1-0-0', key: '0-1-0-0' },
      { title: '0-1-0-1', key: '0-1-0-1' },
      { title: '0-1-0-2', key: '0-1-0-2' }
    ]
  },
  {
    title: '0-2',
    key: '0-2'
  }
]
/**
 * 查找节点
 * @param {*} dataSource 树结构数据
 * @param {*} value 查找的值
 * @param {*} key 节点属性key值，默认为key
 * @param {*} childKey 子节点属性key值，默认为children
 * @returns 节点对象
 */

function findNode(dataSource, value, key = 'key', childKey = 'children') {
  let node = null
  const dfs = array => {
    array.forEach(item => {
      if (item[key] !== value) {
        if (item[childKey] instanceof Array && item[childKey].length) {
          dfs(item[childKey])
        }
      } else {
        node = item
      }
    })
  }
  if (dataSource instanceof Array) {
    dfs(dataSource)
  } else {
    throw Error(`dataSource must be Array`)
  }
  return node
}
const node = findNode(tree, '0-1-0-1')
console.log(node)
